package com.aptech.springaop83.proxy;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * 业务接口的实现类
 * 
 * 知识点一：
 * 
 * 1、业务接口中，将增加新能监控的方法，用于监听方法的性能（采用硬编码）
 * 2、新增的新能监控方法，即为横切逻辑
 * 
 * 知识点二：
 * 
 * 1、横切逻辑拿出来，是使用相关技术，在和业务逻辑融合起来
 * 2、相关技术指的是：动态代理
 * 
 * 知识点三：
 * 1、动态代理有二种，第一种jdk的动态代理 第二种cglib的动态代理
 * 2、jdk动态代理基于接口的 
 * 3、cglib的基于类的（cglib第三方jar包）
 * 
 * @author Ryan
 * 
 */
public class ForumServiceImpl implements ForumService {

	private static final Logger logger = LoggerFactory
			.getLogger(ForumServiceImpl.class);

	@Override
	public void removeFourm(int forumId) {

		/**
		 * 第一步：记录方法调用的开始时间
		 */		
//		PerformanceMonitor.begin("removeFourm");
		
		/**
		 * 第二步：模拟删除耗时
		 */
		logger.info("模拟删除Forum记录，forumId = " + forumId);

		try {
			Thread.currentThread().sleep(40);
		} catch (InterruptedException e) {
			logger.error("出现异常，异常信息=", e);
		}
		
		/**
		 * 第三步：记录方法调用的结束时间
		 */
//		PerformanceMonitor.end();
	}
	

	@Override
	public void removeTopic(int topicId) {

		/**
		 * 第一步：记录方法调用的开始时间
		 */
//		PerformanceMonitor.begin("removeTopic");
		
		/**
		 * 第二步：模拟删除耗时
		 */
		logger.info("模拟删除Topic记录，topicId = " + topicId);

		try {
			Thread.currentThread().sleep(20);
		} catch (InterruptedException e) {
			logger.error("出现异常，异常信息=", e);
		}
		
		/**
		 * 第三步：记录方法调用的结束时间
		 */
//		PerformanceMonitor.end();
	}

}
